package com.allm.ai.common.factory;

import com.allm.ai.common.entity.AiModel;
import org.springframework.ai.chat.model.ChatModel;

/**
 * ChatModel 创建器接口
 * 用于根据数据库中的 AiModel 配置动态创建 ChatModel 实例
 */
public interface ChatModelCreator {
    
    /**
     * 获取支持的服务提供商名称
     * @return 服务提供商名称
     */
    String getServiceProvider();
    
    /**
     * 根据 AiModel 创建 ChatModel
     * @param aiModel 数据库中的模型配置
     * @return ChatModel 实例
     * @throws Exception 创建失败时抛出异常
     */
    ChatModel createChatModel(AiModel aiModel) throws Exception;
    
    /**
     * 检查是否支持流式调用
     * @return 是否支持流式调用
     */
    default boolean supportsStreaming() {
        return true;
    }

     /**
     * 判断是否为推理模型
     */
    default boolean isReasoningModel(AiModel aiModel) {
        if (aiModel == null) return false;
        return aiModel.getReasonSupport() && aiModel.getReasoningEnable();
    }
    
    /**
     * 验证模型配置是否有效
     * @param aiModel 模型配置
     * @return 验证结果
     */
    default boolean validateConfig(AiModel aiModel) {
        return aiModel != null 
            && aiModel.getApiKey() != null 
            && !aiModel.getApiKey().trim().isEmpty()
            && aiModel.getApiEndpoint() != null 
            && !aiModel.getApiEndpoint().trim().isEmpty()
            && aiModel.getName() != null 
            && !aiModel.getName().trim().isEmpty();
    }
} 